1. Technical Field
The embodiments herein generally relate to device driver generation for a hardware device, and, more particularly, to a run time generation and functionality validation of device drivers using a high level descriptions of the hardware device and software environment that embedded in the hardware device and a run time environment.
2. Description of the Related Art
Typically any software running on a hardware/platform exercises the features of the hardware by way of device drivers. A device driver generally refers to a software code (group of software instructions), which enables a computing device (e.g., a computer system) to interface with a hardware device (e.g., a printer, a modem, a network controller card, etc.). The device driver provides appropriate interfaces enabling various software modules (e.g., user applications, operating system components, etc.) executing in the computing device (or hardware components in the computing device) to communicate with and/or to control the hardware device.
Device driver code is different for different computing devices generally due to differences in hardware and software characteristics among computing devices. For example, different operating systems (or its absence) may require different software codes for operation as a device driver in the corresponding computing devices. Similarly, having different hardware (devices, registers, etc.) characteristics may also require different software codes.
Device driver for a device is usually provided by one of the following means (i) sometimes written as part of applications, (ii) supplied as a standard component of an Operating System, (iii) written as a software component by a developer when he/she has a reference hardware platform and the run time environment. Typically, device driver writers use the description of the device features that are usually provided in English. This leads to ambiguity which results in quite a few to and fro between the hardware and software developers. There are a large number of combinations of different computing devices and operating environments (hardware and software characteristics). Since the information needed to write a device driver for a specific hardware device and/or operating system typically has to be obtained manually, it is cumbersome to write device drivers for these various combinations.